home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 004 / mathstat.arc / MATRIX.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1983-05-19  |  2.6 KB  |  114 lines

  1. 5  CLS:KEY OFF:WIDTH 80
  2. 10  '====== SIMULTANEOUS EQUATIONS ====
  3. 12  SE$="SIMULTANEOUS EQUATIONS"
  4. 15  PRINT TAB(29) SE$:PRINT :PRINT
  5. 16  PRINT "THIS PROGRAM SOLVES SIMULTANEOUS EQUATIONS. THE NUMBER OF EQUATIONS IS FIRST"
  6. 17  PRINT "ENTERED, FOLLOWED BY THE COEFFICIENTS OF EACH EQUATION AND THEN THE"
  7. 18  PRINT "RESPECTIVE CONSTANT. THE USER MUST SUPPLY THE APPROPRIATE DATA WHEN REQUESTED."
  8. 19  PRINT "IF AN EQUATION DOES NOT HAVE A PARTICULAR COEFFICIENT, ENTER ZERO (0) WHEN":PRINT "PROMPTED.":PRINT :PRINT
  9. 20  INPUT "NUMBER OF EQUATIONS ",RA
  10. 25  PRINT :PRINT
  11. 30  CA=RA:RB=RA
  12. 40  '***** COEFFICIENT MATRIX *******
  13. 90  GOSUB 280
  14. 120  '***** CONSTANT MATRIX *****
  15. 140  GOSUB 1410
  16. 150  'FIND INVERSE OF MATRIX A
  17. 160  GOSUB 1060
  18. 170  'MULTIPLY INVERSE A AND VECTOR B
  19. 180  X=RB
  20. 190  PRINT
  21. 200  GOSUB 670
  22. 220  CLS:PRINT TAB(29); SE$
  23. 241  PRINT:PRINT
  24. 244  FOR I=1 TO RA
  25. 245  FOR J=1 TO CA
  26. 246  IF SGN(KB(I,J))=-1 THEN SG$=" -" ELSE SG$=" +"
  27. 247  IF J=1 THEN SG$=""
  28. 248  KB$=STR$(KB(I,J))
  29. 249  PRINT SG$+KB$+CHR$(96+J);
  30. 250  NEXT J
  31. 252  PRINT " =";B(I)
  32. 253  NEXT I
  33. 254  PRINT :PRINT "Where: ":'OUTPUT RESULT
  34. 255  FOR I=1 TO RA
  35. 256  PRINT "   " CHR$(96+I)" =";D(I)
  36. 257  NEXT I
  37. 259  PRINT :PRINT :PRINT
  38. 261  PRINT "PRINT OUTPUT ? ";
  39. 263  A$=INKEY$: IF A$="" THEN 263
  40. 265  IF A$="Y" OR A$="y" THEN GOSUB 1500
  41. 273  PRINT :PRINT
  42. 274  PRINT "SOLVE ANOTHER SET OF EQUATIONS ? ";
  43. 275  A$=INKEY$: IF A$="" THEN 275
  44. 276  IF A$="Y" OR A$="y" THEN CLEAR:GOTO 5
  45. 277  CLS:PRINT :PRINT "Have a Nice Day":END
  46. 279  '=============== MATRIX READ ====================
  47. 280  DIM A(RA,CA), KB(RA,CA)
  48. 290  FOR I=1 TO RA
  49. 300  FOR J=1 TO CA
  50. 310  PRINT "Equation";I;", coefficient " CHR$(96+J) " ";
  51. 315  INPUT A(I,J)
  52. 317  KB(I,J)=A(I,J)
  53. 320  NEXT J
  54. 325  PRINT
  55. 330  NEXT I
  56. 335  PRINT
  57. 340  RETURN
  58. 650  '============   MATRIX MULTIPLY, B IS A VECTOR =========
  59. 660  'SU IS SUM OF MULTIPLIED ELEMENTS
  60. 670  DIM D(RB)
  61. 680  SU=0
  62. 690  FOR I=1 TO RA
  63. 700  FOR J=1 TO CA
  64. 710  SU=SU+(A(I,J)*B(J))
  65. 720  NEXT J
  66. 730  D(I)=SU
  67. 740  SU=0
  68. 750  NEXT I
  69. 760  RETURN
  70. 1040  '================  MATRIX INVERSION   =====================
  71. 1050  'MAT A IS REPLACED WITH ITS INVERSE
  72. 1060  FOR K=1 TO RA
  73. 1070  FOR J=1 TO RA
  74. 1080  IF J=K GOTO 1100
  75. 1090  A(K,J)=A(K,J)/A(K,K)
  76. 1100  NEXT J
  77. 1110  A(K,K)=1/A(K,K)
  78. 1120  FOR I=1 TO RA
  79. 1130  IF I=K GOTO 1180
  80. 1140  FOR J=1 TO RA
  81. 1150  IF J=K GOTO 1170
  82. 1160  A(I,J)=A(I,J)-A(K,J)*A(I,K)
  83. 1170  NEXT J
  84. 1180  NEXT I
  85. 1190  FOR I=1 TO RA
  86. 1200  IF I=K GOTO 1220
  87. 1210  A(I,K)=-A(I,K)*A(K,K)
  88. 1220  NEXT I
  89. 1230  NEXT K
  90. 1240  RETURN
  91. 1400  '===============   READ VECTOR B   ============================
  92. 1410  DIM B(RB)
  93. 1420  FOR I=1 TO RB
  94. 1430  PRINT "Constant for equation";I;
  95. 1435  INPUT B(I)
  96. 1440  NEXT I
  97. 1450  RETURN
  98. 1490  '============ PRINT OUTPUT ===============
  99. 1500  LPRINT TAB(29); SE$
  100. 1505  FOR BL=1 TO 5:LPRINT :NEXT BL
  101. 1510  FOR I=1 TO RA
  102. 1520  FOR J=1 TO CA
  103. 1530  IF SGN(KB(I,J))=-1 THEN SG$=" -" ELSE SG$=" +"
  104. 1540  IF J=1 THEN SG$=""
  105. 1550  KB$=STR$(KB(I,J))
  106. 1560  LPRINT SG$+KB$+CHR$(96+J);
  107. 1570  NEXT J
  108. 1580  LPRINT " =";B(I)
  109. 1590  NEXT I
  110. 1600  LPRINT :LPRINT "Where: ":'OUTPUT RESULT
  111. 1610  FOR I=1 TO RA
  112. 1620  LPRINT "   " CHR$(96+I)" =";D(I)
  113. 1630  NEXT I
  114.